package com.file;

import java.io.File;

/**
 * 文件测试
 * cmd
 *      tree
 D:\666>tree
 卷 Data 的文件夹 PATH 列表
 卷序列号为 82C9-2BFF
 D:.
 ├─source
 │  └─source
 │      ├─dfd
 │      ├─ss
 │      ├─sss  df
 │      │  └─bb
 │      └─yy
 └─target

 *     tree /f
 D:\666>tree /f
 卷 Data 的文件夹 PATH 列表
 卷序列号为 82C9-2BFF
 D:.
 ├─source
 │  └─source
 │      │  1102.xlsx
 │      │  1103.xlsx
 │      │
 │      ├─dfd
 │      │      899.xlsx
 │      │      998.xlsx
 │      │
 │      ├─ss
 │      ├─sss  df
 │      │  │  111.pdf
 │      │  │  222.pdf
 │      │  │  899.xlsx
 │      │  │  998.xlsx
 │      │  │
 │      │  └─bb
 │      │          112B.pdf
 │      │
 │      └─yy
 │              wKgA52A4Yc-AarNUAAAsIDCZxT430.xlsx
 │
 └─target

 *
 */
public class FileTest {
    private static int count = 1;

    public static void main(String[] args) {
        /*
         * 将源目录下的文件 移动到 目标目录下
         */
        String source = "D:\\666\\source";//源目录
        String target = "D:\\666\\target";//目标目录
        moveFile(source, target);
    }

    /**
     * 移动目标目录文件，到指定目录下(仅移动文件，不需要文件夹)
     * @param source  源文件目录
     * @param target    目标目录
     */
    public static void moveFile(String source, String target){
        File sourceDirectory = new File(source);
        File targetDirectory = new File(target);
        //判断目标目录是否存在，不存在则创建此目录
        if (!targetDirectory.exists()) {
            targetDirectory.mkdirs();
        }
        File[] files = sourceDirectory.listFiles();
        for (int i = 0; i < files.length; i++) {
            File file = files[i];
            if(file.isDirectory()){
                //如果是文件夹，递归调用
                moveFile(file.getPath(), target);
                //file.delete();//递归调用完成后，删除此文件夹 可以不删除
            }else{
                //如果是文件，准备移动此文件
                File moveFile = new File(targetDirectory.getPath()+ File.separator + file.getName());
                //判断目标目录下是否存在同名的文件；存在则删除，否则会移动失败
                if (moveFile.exists()) {
                    moveFile.delete();
                }
                boolean b = file.renameTo(moveFile);
                System.out.println(b +" : "+ (count++) );//true 成功 false 失败
            }
        }
    }

}
